# 考点：动态规划
"""
题目描述
给你一串未加密的字符串str，通过对字符串的每一个字母进行改变来实现加密，加密方式是在每一个字母str[i]偏移特定数组元素a[i]的量，数组a前三位已经赋值：a[0]=1,a[1]=2,a[2]=4。

当i>=3时，数组元素a[i]=a[i-1]+a[i-2]+a[i-3]。

例如：原文 abcde 加密后 bdgkr，其中偏移量分别是1,2,4,7,13。

输入输出描述
输入描述：第一行是整数n，表示n组测试数据。 每组数据包含一行，原文str(只含有小写字母，长度大于0小于50)。
输出描述：每组测试数据输出一行，表示密文。

示例
示例1

输入
1
xy
输出
ya
示例2

输入
2
xy
abcde
输出
ya
bdgkr
思路
偏移量计算-使用递归
charCodeAt()知道字母的ASCII码，与26个字母的下标找关系
————————————————
版权声明：本文为CSDN博主「倏存」的原创文章，遵循CC 4.0 BY-SA版权协议，转载请附上原文出处链接及本声明。
原文链接：https://blog.csdn.net/weixin_47640160/article/details/125696305
"""


# 预计算偏移数组 a（长度最多 50）
a = [0] * 50
a[0] = 1
a[1] = 2
a[2] = 4
for i in range(3, 50):
    a[i] = a[i-1] + a[i-2] + a[i-3]

# 第一步：读取所有输入
n = int(input())
test_cases = []
for _ in range(n):
    s = input().strip()
    test_cases.append(s)

# 第二步：处理所有测试用例，保存结果
results = []
for s in test_cases:
    encrypted = []
    # enumerate() 是 Python 内置函数，用于在遍历可迭代对象（如字符串、列表）时，同时获取元素的「索引」和「值」
    for index, value in enumerate(s):
        # 计算偏移后的新字符（循环）
        '''把字母转成数字（0 ~ 25）
            ord(char) - ord('a')
            ord('a') 返回 'a' 的 ASCII 码：97
            ord('b') = 98，ord('c') = 99，……，ord('z') = 122'''

        '''加上偏移量，并处理循环
            new_index = (ord(char) - ord('a') + a[j]) % 26
            a[j] 是题目给的偏移量（比如 1, 2, 4, 7, ...）
            加上偏移后，可能超过 25（比如 'z' (25) + 1 = 26）
            用 % 26（模 26）实现自动循环：
            % 26 保证结果永远在 0 ~ 25 之间，不会越界！'''

        '''把数字转回字母
            new_char = chr(new_index + ord('a'))
            new_index 是 0~25 的数字
            加上 ord('a')（97）变回 ASCII 码
            chr() 把 ASCII 码转成字符'''
        new_index = (ord(value) - ord('a') + a[index]) % 26
        new_char = chr(new_index + ord('a'))
        encrypted.append(new_char)
    results.append(''.join(encrypted))

# 第三步：统一输出所有结果
for res in results:
    print(res)


# 或：


# a = [0] * 50
# a[0], a[1], a[2] = 1, 2, 4
# for i in range(3, 50):
#     a[i] = a[i-1] + a[i-2] + a[i-3]
#
# n = int(input())
# cases = [input().strip() for _ in range(n)]
#
# results = [
#     ''.join(
#         chr((ord(c) - ord('a') + a[i]) % 26 + ord('a'))
#         for i, c in enumerate(s)
#     )
#     for s in cases
# ]
#
# for res in results:
#     print(res)